/* Promise 将多个 Promise 顺序执行、全部完成、只有一个完成 */
// 创建三个不同的 Promise 函数
function function1() {
    // 返回 Promise 对象
    return new Promise((resolve, reject) => {
        if (true !== false) {
            // 成功执行 异步方法
            setTimeout(() => resolve("函数成功"), 1000);
        } else {
            // 失败返回提示
            reject("函数失败");
        }
    });
}
function function2() {
    // 返回 Promise 对象
    return new Promise((resolve, reject) => {
        if (true !== false) {
            // 成功执行 异步方法
            setTimeout(() => resolve("函数2成功"), 500);
        } else {
            // 失败返回提示
            reject("函数2失败");
        }
    });
}
function function3() {
    // 返回 Promise 对象
    return new Promise((resolve, reject) => {
        if (true !== false) {
            // 成功执行 异步方法
            setTimeout(() => resolve("函数3成功"), 200);
        } else {
            // 失败返回提示n
            reject("函数3失败");
        }
    });
}

/* 顺序执行（异步模块 等待上一个运行完成再接着下一个） */
async function executePromises(promises) {
    console.log("这是顺序执行：");
    for (const promise of promises) {
        try {
            // 等待上一个完成运行
            const promiseOut = await promise;
            // 输出 promise 对象
            console.log(promiseOut);
        } catch (error) {
            console.log(error);
        }
    }
}
// // 调用执行函数并传入 Promise 函数 */
await executePromises([fn1(), fn2(), fn3()]);

// /* 全部完成 */
await Promise.all([fn1(), fn2(), fn3()])
    .then((res) => console.log("ALL functio-->\n", res))
    .catch((err) => console.log(err));

// /* 只有一个完成 */
Promise.race([fn1(), fn2(), fn3()])
    .then((res) => console.log("A function-->\n", res))
    .catch((err) => console.log(err));